package com.egao.orderB.service;

import com.egao.common.core.damon.results.PageResult2;
import com.egao.common.core.web.JsonResult;
import com.egao.common.system.entity.User;
import com.egao.orderB.entity.Bill;
import com.egao.orderB.entity.BillImport;
import com.egao.orderB.entity.WriteOff;
import org.apache.poi.ss.formula.functions.T;

import java.util.List;

/**
 * 订单管理服务类
 * @author : Doman
 * @date : 2020-05-28 14:12:19
 * @version ：1.0
 */
public interface BillService /*extends IService<Bill>*/ {

    /**
     * 分页查询
     */
    //PageResult<Bill> listPage(PageParam<Bill> page);

    /**
     * 查询所有
     */
    //List<Bill> listAll(Map<String, Object> page);

    /**
	 * 分页查询
	 * @param page
	 * @param bill
	 * @return
	 */
	public JsonResult list2(PageResult2<T> page, Bill bill, User loginUser) throws Exception;

    /**
	 * 分页查询
	 * @param page
	 * @param bill
	 * @return
	 */
	public JsonResult list(PageResult2<T> page, Bill bill, User loginUser) throws Exception;

    /**
	 * 分页查询
	 * @param bill
	 * @param bill
	 * @return
	 */
	public JsonResult listOpen(Bill bill, User loginUser);

    /**
	 * 分页查询
	 * @param page
	 * @param bill
	 * @return
	 */
	public JsonResult listDel(PageResult2<T> page, Bill bill, User loginUser) throws Exception;

    /**
	 * 分页查询
	 * @param page
	 * @param bill
	 * @return
	 */
	public JsonResult financeList(PageResult2<T> page, Bill bill, User loginUser) throws Exception;

	/**
	 * 分页查询
	 * @param bill
	 * @return
	 */
	public List<Bill> list(Bill bill);

	/**
	 * 分页查询
	 * @param bill
	 * @return
	 */
	public List<Bill> exportsList(Bill bill);

	/**
	 * 分页查询
	 * @param bill
	 * @return
	 */
	public List<Bill> financeExportsList(Bill bill);
	/**
	 * 分页查询
	 * @param bill
	 * @return
	 */
	public List<Bill> financeExportsList2(Bill bill);

	/**
	 * 分页查询
	 * @param bill
	 * @return
	 */
	public List<Bill> financeExportsClassifyList(Bill bill);

	/**
	 * 分页查询
	 * @return
	 */
	public JsonResult listUnExamine();

	/**
	 * 分页查询
	 * @param bill
	 * @return
	 */
	public List<Bill>  findCarName(Bill bill);

    /**
	 * 分页查询
	 * @param bill
	 * @return
	 */
	public List<Bill> calendarBillNum(Bill bill, User loginUser) throws Exception;

	/**
	 * 获取list
	 * @param bill
	 * @return
	 */
	public JsonResult list(Bill bill, User loginUser);

	/**
	 * 获取list
	 * @param bill
	 * @return
	 */
	public JsonResult listNum(Bill bill, User loginUser);

	/**
	 * 获取list
	 * @param bill
	 * @return
	 */
	public JsonResult listDayNum(Bill bill, User loginUser);

	/**
	 * 获取list
	 * @param bill
	 * @return
	 */
	public JsonResult listWeekNum(Bill bill, User loginUser);

	/**
	 * 获取list
	 * @param bill
	 * @return
	 */
	public JsonResult listMonthNum(Bill bill, User loginUser);

	/**
	 * 获取list
	 * @param bill
	 * @return
	 */
	public JsonResult listMonthCustomerAndDriverNum(Bill bill, User loginUser);

	/**
	 * 获取list
	 * @param bill
	 * @return
	 */
	public JsonResult listUnPayNum(Bill bill, User loginUser);

	/**
	 * 获取list
	 * @param bill
	 * @return
	 */
	public JsonResult listDockNum(Bill bill, User loginUser);

	/**
	 * 根据Id查询
	 * @param bill
	 * @return
	 */
	public Bill getById(Bill bill);

	/**
	 * 根据Id查询
	 * @return
	 */
	public void feerun();

	/**
	 * 复制订单
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult copyBill(Bill bill, User loginUser);

	/**
	 * 下单
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult order(Bill bill, User loginUser);

	/**
	 * 下单
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult BillOrder(BillImport billImport, Bill bill, User loginUser);

	/**
	 * 指派车队接单
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult carTeam(Bill bill, User loginUser);

	/**
	 * 做单
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult make(Bill bill, User loginUser);

	/**
	 * 做单
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult platReceive(Bill bill, User loginUser);

//	/**
//	 * 接单
//	 * @param bill
//	 * @param loginUser
//	 * @return
//	 */
//	public JsonResult driverReceive(Bill bill, User loginUser);

	/**
	 * 提箱
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult upBox_substitute(Bill bill, User loginUser);

	/**
	 * 提箱
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult upBox_gps(Bill bill, User loginUser);

	/**
	 * 提箱
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult upBox(Bill bill, User loginUser);

	/**
	 * 到厂
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult arrivedFactory(Bill bill, User loginUser);

	/**
	 * 离厂
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult leaveFactory(Bill bill, User loginUser);

	/**
	 * 进港
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult inPort_substitute(Bill bill, User loginUser);

	/**
	 * 进港
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult inPort_gps(Bill bill, User loginUser);

	/**
	 * 进港
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult inPort(Bill bill, User loginUser);

	/**
	 * 发起费用清单
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult costBill(Bill bill, User loginUser) throws Exception;

	/**
	 * 发起费用清单
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult directCostBill(Bill bill, User loginUser) throws Exception;

	/**
	/**
	 * 应付费用审核
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult payableVerify(Bill bill, User loginUser);

	/**
	/**
	 * 应收费用审核
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult receivableVerify(Bill bill, User loginUser);

	/**
	/**
	 * 应收费用审核
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult receivablePayableVerify(Bill bill, User loginUser);

	/**
	/**
	 * 应收费用审核
	 * @return
	 */
	public JsonResult exportsFinance(JsonResult jr, Bill bill) throws Exception;

	/**
	/**
	 * 应收费用审核
	 * @return
	 */
	public JsonResult exportsFinance2(List<Bill> billList,List<String> feeNamesys, List<String> feeNamesyf, Bill bill) throws Exception;

	/**
	/**
	 * 应收费用审核
	 * @return
	 */
	public JsonResult exportsFinanceClassify(List<Bill> billList, Bill bill) throws Exception;

	/**
	/**
	 * 客户Excel导出
	 * @return
	 */
	public JsonResult exportsCarTeam(List<Bill> billList,List<String> feeNames, Bill bill) throws Exception;

	/**
	/**
	 * 客户Excel导出
	 * @return
	 */
	public JsonResult exportsCustomer(List<Bill> billList,List<String> feeNames, Bill bill) throws Exception;

	/**
	/**
	 * 司机费用审核
	 * @param bill
	 * @param loginUser
	 * @return
	 */
//	public JsonResult driverFeeFleetVerify(Bill bill, User loginUser);

	/**
	/**
	 * 司机费用审核
	 * @param bill
	 * @param loginUser
	 * @return
	 */
//	public JsonResult driverFeePlatVerify(Bill bill, User loginUser);

	/**
	 * 客服审核
	 * @param bill
	 * @param loginUser
	 * @return
	 */
//	public JsonResult verify(Bill bill, User loginUser);

	/**
	 * 货代确认
	 * @param bill
	 * @param loginUser
	 * @return
	 */
//	public JsonResult customerVerify(Bill bill, User loginUser);

	/**
	 * 货代费用未通过
	 * @param bill
	 * @param loginUser
	 * @return
	 */
//	public JsonResult customerDisagree(Bill bill, User loginUser);

	/**
	 * 货代确认
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult billCancel(Bill bill, User loginUser);

	/**
	 * 货代确认
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult billCancelCustomer(Bill bill, User loginUser);

	/**
	 * 货代确认
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult billRecover(Bill bill, User loginUser);

	/**
	 * 应收
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult receivable(Bill bill, User loginUser);

	/**
	 * 应付
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult payable(Bill bill, User loginUser);

	/**
	 * 保存
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult save(Bill bill, User loginUser);

	/**
	 * 修改
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult update(Bill bill, User loginUser);

	/**
	 * 修改
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult updateFinance(Bill bill, User loginUser);

	/**
	 * 修改
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult updateRemark(Bill bill, User loginUser);

	/**
	 * 修改箱号
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult updateBoxNumPic(Bill bill, User loginUser);

	/**
	 * 修改封号
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult updateSealnoPic(Bill bill, User loginUser);

	/**
	 * 修改文件预录入照片
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult updatePreEntryPic(Bill bill, User loginUser);

	/**
	 * 修改文件附件
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult updateAnnex(Bill bill, User loginUser);

	/**
	 * 修改文件拖拽
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult updateSfile(Bill bill, User loginUser);

	/**
	 * 修改文件拖拽
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult changeDropBox(Bill bill, User loginUser);
	/**
	 * 修改文件拖拽
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult changeWithholdingBox(Bill bill, User loginUser);

	/**
	 * 修改文件拖拽
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult changeCash(Bill bill, User loginUser);

	/**
	 * 删除
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public JsonResult remove(Bill bill, User loginUser);

	/**
	 * 分页查询
	 * @param page
	 * @param bill
	 * @return
	 */
	public JsonResult writeOffAccountsList(PageResult2<T> page, WriteOff bill, User loginUser) throws Exception;

}
